home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / KeyboardManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  5.6 KB  |  248 lines

  1. package javax.swing;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.AWTEvent;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Window;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.event.InputEvent;
  11. import java.awt.event.KeyEvent;
  12. import java.util.Enumeration;
  13. import java.util.Hashtable;
  14. import java.util.Vector;
  15.  
  16. class KeyboardManager {
  17.    static KeyboardManager currentManager = new KeyboardManager();
  18.    Hashtable containerMap = new Hashtable();
  19.    Hashtable componentKeyStrokeMap = new Hashtable();
  20.    // $FF: synthetic field
  21.    static Class class$javax$swing$JMenuBar;
  22.  
  23.    // $FF: synthetic method
  24.    static Class class$(String var0) {
  25.       try {
  26.          return Class.forName(var0);
  27.       } catch (ClassNotFoundException var2) {
  28.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  29.       }
  30.    }
  31.  
  32.    void fireBinding(JComponent var1, KeyStroke var2, KeyEvent var3) {
  33.       JComponent.KeyboardBinding var4 = var1.bindingForKeyStroke(var2, 2);
  34.       if (var4 != null) {
  35.          ActionListener var5 = var4.getAction();
  36.          if (var5 != null) {
  37.             if (var5 instanceof Action && !((Action)var5).isEnabled()) {
  38.                return;
  39.             }
  40.  
  41.             var5.actionPerformed(new ActionEvent(var1, 1001, var4.getCommand()));
  42.             ((InputEvent)var3).consume();
  43.          }
  44.       }
  45.  
  46.    }
  47.  
  48.    public boolean fireKeyboardAction(KeyEvent var1, boolean var2, Container var3) {
  49.       if (((InputEvent)var1).isConsumed()) {
  50.          System.out.println("Aquired pre-used event!");
  51.          Thread.dumpStack();
  52.       }
  53.  
  54.       KeyStroke var4;
  55.       if (((AWTEvent)var1).getID() == 400) {
  56.          var4 = KeyStroke.getKeyStroke(var1.getKeyChar());
  57.       } else {
  58.          var4 = KeyStroke.getKeyStroke(var1.getKeyCode(), ((InputEvent)var1).getModifiers(), var2 ^ true);
  59.       }
  60.  
  61.       Hashtable var5 = (Hashtable)this.containerMap.get(var3);
  62.       if (var5 != null) {
  63.          Object var6 = var5.get(var4);
  64.          if (var6 != null) {
  65.             if (var6 instanceof JComponent) {
  66.                JComponent var7 = (JComponent)var6;
  67.                if (((Component)var7).isShowing() && ((Component)var7).isEnabled()) {
  68.                   this.fireBinding(var7, var4, var1);
  69.                }
  70.             } else if (var6 instanceof Vector) {
  71.                Vector var12 = (Vector)var6;
  72.                Enumeration var8 = var12.elements();
  73.  
  74.                while(var8.hasMoreElements()) {
  75.                   JComponent var9 = (JComponent)var8.nextElement();
  76.                   if (((Component)var9).isShowing() && ((Component)var9).isEnabled()) {
  77.                      this.fireBinding(var9, var4, var1);
  78.                      if (((InputEvent)var1).isConsumed()) {
  79.                         return true;
  80.                      }
  81.                   }
  82.                }
  83.             } else {
  84.                System.out.println("Unexpected condition in fireKeyboardAction " + var6);
  85.                Thread.dumpStack();
  86.             }
  87.          }
  88.       }
  89.  
  90.       if (((InputEvent)var1).isConsumed()) {
  91.          return true;
  92.       } else {
  93.          if (var5 != null) {
  94.             Vector var10 = (Vector)var5.get(class$javax$swing$JMenuBar != null ? class$javax$swing$JMenuBar : (class$javax$swing$JMenuBar = class$("javax.swing.JMenuBar")));
  95.             if (var10 != null) {
  96.                Enumeration var13 = var10.elements();
  97.  
  98.                while(var13.hasMoreElements()) {
  99.                   JMenuBar var14 = (JMenuBar)var13.nextElement();
  100.                   if (((Component)var14).isShowing() && ((Component)var14).isEnabled()) {
  101.                      this.fireBinding(var14, var4, var1);
  102.                      if (((InputEvent)var1).isConsumed()) {
  103.                         return true;
  104.                      }
  105.                   }
  106.                }
  107.             }
  108.          }
  109.  
  110.          if (var3 instanceof JInternalFrame) {
  111.             Container var11 = getTopAncestor((JInternalFrame)var3);
  112.             if (var11 == null) {
  113.                return false;
  114.             }
  115.  
  116.             this.fireKeyboardAction(var1, var2, var11);
  117.          }
  118.  
  119.          return ((InputEvent)var1).isConsumed();
  120.       }
  121.    }
  122.  
  123.    public static KeyboardManager getCurrentManager() {
  124.       return currentManager;
  125.    }
  126.  
  127.    private static Container getTopAncestor(JComponent var0) {
  128.       for(Container var1 = ((Component)var0).getParent(); var1 != null; var1 = ((Component)var1).getParent()) {
  129.          if (var1 instanceof Window || var1 instanceof Applet || var1 instanceof JInternalFrame) {
  130.             return var1;
  131.          }
  132.       }
  133.  
  134.       return null;
  135.    }
  136.  
  137.    public void registerKeyStroke(KeyStroke var1, JComponent var2) {
  138.       Container var3 = getTopAncestor(var2);
  139.       if (var3 != null) {
  140.          Hashtable var4 = (Hashtable)this.containerMap.get(var3);
  141.          if (var4 == null) {
  142.             var4 = this.registerNewTopContainer(var3);
  143.          }
  144.  
  145.          Object var5 = var4.get(var1);
  146.          if (var5 == null) {
  147.             var4.put(var1, var2);
  148.          } else if (var5 instanceof Vector) {
  149.             Vector var6 = (Vector)var5;
  150.             if (!var6.contains(var2)) {
  151.                var6.addElement(var2);
  152.             }
  153.          } else if (var5 instanceof JComponent) {
  154.             if (var5 != var2) {
  155.                Vector var7 = new Vector();
  156.                var7.addElement(var5);
  157.                var7.addElement(var2);
  158.                var4.put(var1, var7);
  159.             }
  160.          } else {
  161.             System.out.println("Unexpected condition in registerKeyStroke");
  162.             Thread.dumpStack();
  163.          }
  164.  
  165.          this.componentKeyStrokeMap.put(new ComponentKeyStrokePair(this, var2, var1), var3);
  166.       }
  167.    }
  168.  
  169.    public void registerMenuBar(JMenuBar var1) {
  170.       Container var2 = getTopAncestor(var1);
  171.       Hashtable var3 = (Hashtable)this.containerMap.get(var2);
  172.       if (var3 == null) {
  173.          var3 = this.registerNewTopContainer(var2);
  174.       }
  175.  
  176.       Vector var4 = (Vector)var3.get(class$javax$swing$JMenuBar != null ? class$javax$swing$JMenuBar : (class$javax$swing$JMenuBar = class$("javax.swing.JMenuBar")));
  177.       if (var4 == null) {
  178.          var4 = new Vector();
  179.          var3.put(class$javax$swing$JMenuBar != null ? class$javax$swing$JMenuBar : (class$javax$swing$JMenuBar = class$("javax.swing.JMenuBar")), var4);
  180.       }
  181.  
  182.       if (!var4.contains(var1)) {
  183.          var4.addElement(var1);
  184.       }
  185.  
  186.    }
  187.  
  188.    protected Hashtable registerNewTopContainer(Container var1) {
  189.       Hashtable var2 = new Hashtable();
  190.       this.containerMap.put(var1, var2);
  191.       return var2;
  192.    }
  193.  
  194.    public static void setCurrentManager(KeyboardManager var0) {
  195.       currentManager = var0;
  196.    }
  197.  
  198.    public void unregisterKeyStroke(KeyStroke var1, JComponent var2) {
  199.       ComponentKeyStrokePair var3 = new ComponentKeyStrokePair(this, var2, var1);
  200.       Object var4 = this.componentKeyStrokeMap.get(var3);
  201.       if (var4 != null) {
  202.          Hashtable var5 = (Hashtable)this.containerMap.get(var4);
  203.          if (var5 == null) {
  204.             Thread.dumpStack();
  205.          } else {
  206.             Object var6 = var5.get(var1);
  207.             if (var6 == null) {
  208.                Thread.dumpStack();
  209.             } else {
  210.                if (var6 instanceof JComponent && var6 == var2) {
  211.                   var5.remove(var1);
  212.                } else if (var6 instanceof Vector) {
  213.                   Vector var7 = (Vector)var6;
  214.                   var7.removeElement(var2);
  215.                   if (var7.isEmpty()) {
  216.                      var5.remove(var1);
  217.                   }
  218.                }
  219.  
  220.                if (var5.isEmpty()) {
  221.                   this.containerMap.remove(var4);
  222.                }
  223.  
  224.                this.componentKeyStrokeMap.remove(var3);
  225.             }
  226.          }
  227.       }
  228.    }
  229.  
  230.    public void unregisterMenuBar(JMenuBar var1) {
  231.       Container var2 = getTopAncestor(var1);
  232.       Hashtable var3 = (Hashtable)this.containerMap.get(var2);
  233.       if (var3 != null) {
  234.          Vector var4 = (Vector)var3.get(class$javax$swing$JMenuBar != null ? class$javax$swing$JMenuBar : (class$javax$swing$JMenuBar = class$("javax.swing.JMenuBar")));
  235.          if (var4 != null) {
  236.             var4.removeElement(var1);
  237.             if (var4.isEmpty()) {
  238.                var3.remove(class$javax$swing$JMenuBar != null ? class$javax$swing$JMenuBar : (class$javax$swing$JMenuBar = class$("javax.swing.JMenuBar")));
  239.                if (var3.isEmpty()) {
  240.                   this.containerMap.remove(var2);
  241.                }
  242.             }
  243.          }
  244.       }
  245.  
  246.    }
  247. }
  248.